home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1999 #2 / Amiga Plus CD - 1999 - No. 2.iso / System-Boost / Workbench / ToolManager / Source / Prefs / locale.c < prev    next >
C/C++ Source or Header  |  1998-06-17  |  6KB  |  140 lines

  1. /*
  2.  * locale.c  V3.1
  3.  *
  4.  * Preferences editor localization support
  5.  *
  6.  * Copyright (C) 1990-98 Stefan Becker
  7.  *
  8.  * This source code is for educational purposes only. You may study it
  9.  * and copy ideas or algorithms from it for your own projects. It is
  10.  * not allowed to use any of the source codes (in full or in parts)
  11.  * in other programs. Especially it is not allowed to create variants
  12.  * of ToolManager or ToolManager-like programs from this source code.
  13.  *
  14.  */
  15.  
  16. #include "toolmanager.h"
  17.  
  18. /* Global strings */
  19. const char *TextGlobalTitle        = LOCALE_TEXT_GLOBAL_TITLE_STR;
  20. const char *TextGlobalCommand      = LOCALE_TEXT_GLOBAL_COMMAND_STR;
  21. const char *TextGlobalSelectCmd    = LOCALE_TEXT_GLOBAL_SELECT_COMMAND_STR;
  22. const char *TextGlobalDirectory    = LOCALE_TEXT_GLOBAL_DIRECTORY_STR;
  23. const char *TextGlobalSelectDir    = LOCALE_TEXT_GLOBAL_SELECT_DIRECTORY_STR;
  24. const char *TextGlobalHotKey       = LOCALE_TEXT_GLOBAL_HOTKEY_STR;
  25. const char *TextGlobalPublicScreen = LOCALE_TEXT_GLOBAL_PUBLIC_SCREEN_STR;
  26. const char *TextGlobalPosition     = LOCALE_TEXT_GLOBAL_POSITION_STR;
  27. const char *TextGlobalExecObject   = LOCALE_TEXT_GLOBAL_EXEC_OBJECT_STR;
  28. const char *TextGlobalImageObject  = LOCALE_TEXT_GLOBAL_IMAGE_OBJECT_STR;
  29. const char *TextGlobalSoundObject  = LOCALE_TEXT_GLOBAL_SOUND_OBJECT_STR;
  30. const char *TextGlobalDock         = LOCALE_TEXT_GLOBAL_DOCK_STR;
  31. const char *TextGlobalSelectFile   = LOCALE_TEXT_GLOBAL_SELECT_FILE_STR;
  32. const char *TextGlobalDelete       = LOCALE_TEXT_GLOBAL_DELETE_STR;
  33. const char *HelpGlobalDelete       = LOCALE_HELP_GLOBAL_DELETE_STR;
  34. const char *TextGlobalUse          = LOCALE_TEXT_GLOBAL_USE_STR;
  35. const char *HelpGlobalUse          = LOCALE_HELP_GLOBAL_USE_STR;
  36. const char *TextGlobalCancel       = LOCALE_TEXT_GLOBAL_CANCEL_STR;
  37. const char *HelpGlobalCancel       = LOCALE_HELP_GLOBAL_CANCEL_STR;
  38. const char  TextGlobalAccept[]     = "0123456789";
  39. const char  TextGlobalEmpty[]      = "";
  40.  
  41. /* Local data */
  42. static struct Library *LocaleBase = NULL;
  43. static struct Catalog *Catalog    = NULL;
  44. static const struct TagItem CatalogParams[] = {
  45.  OC_BuiltInLanguage, (ULONG) "english",
  46.  OC_Version,         TMCATALOGVERSION,
  47.  TAG_DONE
  48. };
  49.  
  50. /* Initialize localization */
  51. #undef  DEBUGFUNCTION
  52. #define DEBUGFUNCTION InitLocale
  53. void InitLocale(void)
  54. {
  55.  LOCALE_LOG(LOG0(Entry))
  56.  
  57.  /* Open locale.library */
  58.  if (LocaleBase = OpenLibrary("locale.library", 38)) {
  59.  
  60.   LOCALE_LOG(LOG1(LocaleBase, "0x%08lx", LocaleBase))
  61.  
  62.   /* Open catalog */
  63.   if (Catalog = OpenCatalogA(NULL, "toolmanagerprefs.catalog",
  64.                              CatalogParams)) {
  65.  
  66.    LOCALE_LOG(LOG1(Catalog, "0x%08lx", Catalog))
  67.  
  68.    /* Translate global strings */
  69.    TextGlobalTitle        = TranslateString(TextGlobalTitle,
  70.                                           LOCALE_TEXT_GLOBAL_TITLE);
  71.    TextGlobalCommand      = TranslateString(TextGlobalCommand,
  72.                                           LOCALE_TEXT_GLOBAL_COMMAND);
  73.    TextGlobalSelectCmd    = TranslateString(TextGlobalSelectCmd,
  74.                                           LOCALE_TEXT_GLOBAL_SELECT_COMMAND);
  75.    TextGlobalDirectory    = TranslateString(TextGlobalDirectory,
  76.                                           LOCALE_TEXT_GLOBAL_DIRECTORY);
  77.    TextGlobalSelectDir    = TranslateString(TextGlobalSelectDir,
  78.                                           LOCALE_TEXT_GLOBAL_SELECT_DIRECTORY);
  79.    TextGlobalHotKey       = TranslateString(TextGlobalHotKey,
  80.                                           LOCALE_TEXT_GLOBAL_HOTKEY);
  81.    TextGlobalPublicScreen = TranslateString(TextGlobalPublicScreen,
  82.                                           LOCALE_TEXT_GLOBAL_PUBLIC_SCREEN);
  83.    TextGlobalPosition     = TranslateString(TextGlobalPosition,
  84.                                           LOCALE_TEXT_GLOBAL_POSITION);
  85.    TextGlobalExecObject   = TranslateString(TextGlobalExecObject,
  86.                                           LOCALE_TEXT_GLOBAL_EXEC_OBJECT);
  87.    TextGlobalImageObject  = TranslateString(TextGlobalImageObject,
  88.                                           LOCALE_TEXT_GLOBAL_IMAGE_OBJECT);
  89.    TextGlobalSoundObject  = TranslateString(TextGlobalSoundObject,
  90.                                           LOCALE_TEXT_GLOBAL_SOUND_OBJECT);
  91.    TextGlobalDock         = TranslateString(TextGlobalDock,
  92.                                           LOCALE_TEXT_GLOBAL_DOCK);
  93.    TextGlobalSelectFile   = TranslateString(TextGlobalSelectFile,
  94.                                           LOCALE_TEXT_GLOBAL_SELECT_FILE);
  95.    TextGlobalDelete       = TranslateString(TextGlobalDelete,
  96.                                           LOCALE_TEXT_GLOBAL_DELETE);
  97.    HelpGlobalDelete       = TranslateString(HelpGlobalDelete,
  98.                                           LOCALE_HELP_GLOBAL_DELETE);
  99.    TextGlobalUse          = TranslateString(TextGlobalUse,
  100.                                           LOCALE_TEXT_GLOBAL_USE);
  101.    HelpGlobalUse          = TranslateString(HelpGlobalUse,
  102.                                           LOCALE_HELP_GLOBAL_USE);
  103.    TextGlobalCancel       = TranslateString(TextGlobalCancel,
  104.                                           LOCALE_TEXT_GLOBAL_CANCEL);
  105.    HelpGlobalCancel       = TranslateString(HelpGlobalCancel,
  106.                                           LOCALE_HELP_GLOBAL_CANCEL);
  107.   }
  108.  }
  109. }
  110.  
  111. /* Free locale stuff */
  112. #undef  DEBUGFUNCTION
  113. #define DEBUGFUNCTION DeleteLocale
  114. void DeleteLocale(void)
  115. {
  116.  LOCALE_LOG(LOG0(Entry))
  117.  
  118.  /* Library opened? */
  119.  if (LocaleBase) {
  120.  
  121.   /* Catalog opened? */
  122.   if (Catalog) CloseCatalog(Catalog);
  123.  
  124.   /* Close library */
  125.   CloseLibrary(LocaleBase);
  126.  }
  127. }
  128.  
  129.  
  130. /* Translate one string */
  131. #undef  DEBUGFUNCTION
  132. #define DEBUGFUNCTION TranslateString
  133. const char *TranslateString(const char *text, ULONG id)
  134. {
  135.  LOCALE_LOG(LOG3(Arguments, "Default '%s' (0x%08lx) ID %ld", text, text, id))
  136.  
  137.  /* Return string from catalog or default text */
  138.  return(LocaleBase ? GetCatalogStr(Catalog, id, text) : text);
  139. }
  140.